package com.ys.service.storage;

import com.ys.entity.storage.TccFbaBoxUpBoxRoleEdit;
import com.ys.entity.storage.TccFbaBoxUpByAdd;
import com.ys.entity.storage.TccFbaBoxUpItemByAdd;
import com.ys.vo.R;

import java.util.List;
import java.util.Map;

//FBA装箱单
public interface TccFbaBoxUpService {

	/**
	 * 新增FBA装箱单（调用一次新增一个装箱单，以及对应子列表信息）
	 * @param boxUpemList 装箱单集合
	 * @param bidFbaPlan 计划单号
	 * @return 新增结果
	 */
	R addOneFbaBoxInfo(List<TccFbaBoxUpByAdd> boxUpemList, String bidFbaPlan) throws Exception;

	/**
	 * 修改配货清单号，根据计划单号
	 * @param infolist 列表
	 */
	R updateDistributionBid(List<Map<String, Object>> infolist) throws Exception;

	/**
	 * 获取箱规编辑页信息
	 * @param bid 装箱单号
	 */
	TccFbaBoxUpBoxRoleEdit getBoxRoleEditInfo(String bid) throws Exception;

	/**
	 * 箱规编辑保存
	 * @param params 需要保存的信息
	 */
	R saveBoxRoleEditInfo(Map<String, Object> params) throws Exception;

	/**
	 * FBA导入
	 * @param bid 装箱单号
	 * @param fbaNo FBA编号
	 * @param fbaTrackNo FBA追踪编号
	 */
	R fbaImport(String bid,String fbaNo,String fbaTrackNo) throws Exception;


	/**
	 * FBA导入（按箱）
	 * @param params 参数
	 */
	R fbaImportByBox(Map<String, Object> params) throws Exception;


	/**
	 * 修改FBA仓库
	 * @param params 参数
	 */
	R updateFbaWarehouse(Map<String, Object> params) throws Exception;



	/**
	 * 计划取消(运营)
	 * @param bidFbaPlan 计划单号
	 */
	//R planCancelByOperation(String bidFbaPlan) throws Exception;

	/**
	 * 计划取消
	 * @param bidFbaPlan 计划单号
	 */
	//R planCancel(String bidFbaPlan) throws Exception;


	/**
	 * 装箱审核 - 手动
	 * @param bidFbaPlan 计划单号
	 */
	R examineByHand(String bidFbaPlan) throws Exception;


	/**
	 * 装箱审核前 - 验证
	 * @param bidFbaPlan 计划单号
	 */
	R examineBeforeCheck(String bidFbaPlan) throws Exception;


	/**
	 * 验证采购价 - 验证
	 * @param bidFbaPlan 计划单号
	 */
	R checkPurchaseAmount(String bidFbaPlan)throws Exception;

	/**
	 * 装箱审核
	 * @param bidFbaPlan 计划单号
	 * @param isReCountPurchaseAmount 是否重新计算采购价 0否1是
	 */
	R examine(String bidFbaPlan,int isReCountPurchaseAmount) throws Exception;

	/**
	 * 上传箱规信息
	 * @param bid 装箱单号
	 */
	R uploadPackingInfo(String bid) throws Exception;

	/**
	 * 修改物流服务id（TCC_LogisticsMethod）
	 * @param bid 装箱单号
	 * @param logisticsMethodId 物流服务id（TCC_LogisticsMethod）
	 */
	//R editLogisticsMethodId(String bid,long logisticsMethodId) throws Exception;

	/**
	 * 获取打印标签页的列表信息
	 *  bid //单号
	 * 	printType //打印类型：0商品标、1透明标、2欧代标
	 */
	R printTypeSearchList(String bid,int printType) throws Exception;

	/**
	 * 修改对应标签状态
	 */
	R updateTagState(Map<String, Object> params) throws Exception;

	/**
	 * 打印欧代标打印
	 */
	R europeanStandardPrint(Map<String, Object> params) throws Exception;

	/**
	 * 打印商品标
	 */
	R getGoodsPrintInfo(Map<String, Object> params) throws Exception;

	/**
	 * 选择完方案后，修改方案选项标识符
	 */
	R updatePlacementOptionId(String bid,String placementOptionId) throws Exception;


	/**
	 * 审核，自动 + 按箱
	 */
	R doExamineByAutoAndBox(Map<String, Object> params) throws Exception;


	/**
	 * 获取FBA导入（按箱） 页面子列表信息
	 * @param bid 单号
	 */
	List<Map<String, Object>> getFbaImportByBoxItenList(String bid) throws Exception;


    /**
     * 获取修改FBA仓库页面子列表信息
     * @param bid 单号
     */
    List<Map<String, Object>> getFbaWarehouseItemList(String bid) throws Exception;


	/**
	 * 删除预览信息
	 */
	R delBoxUpAutoAndBoxApiPreviewInfo(String planBid,int generateNo ) throws Exception;



	/**
	 * 方案选择
	 * @param params 方案信息
	 */
	R yesChooseIdea(Map<String, Object> params) throws Exception;

}
